Visualização de Dados
R, Python e Julia

Bruce Trevisan, Heitor Brotto,
Guilherme Alves e Rafael Carneiro

O que é Visualização de Dados?

A Visualização de Dados converte os dados brutos em gráficos, mapas e painéis interativos para análise e decisões objetivas.

Seus 3 principais pilares são:

  • Exploração de Dados: Facilita a interpretação e compreensão da estrutura dos dados.

  • Descoberta de Padrões: Identifica tendências e outliers, gerando insights críticos.

  • Comunicação de Resultados: Transmite a informação de forma clara, garantindo o alinhamento e decisões assertivas.

Leitura e processamento em bloco

A Leitura e Processamento em Bloco é uma técnica crucial para processar grandes conjuntos de dados em sistemas de baixa performance.

Consiste na leitura fragmentada do conjunto de dados, carregando-o em partes na memória (em vez de integralmente), otimizando o uso de recursos e evitando falhas por falta de memória.

Em Julia

Julia é uma linguagem de programação de alto nível, dinâmica e de código aberto, otimizada para computação científica e análise de dados.

  • Os pacotes usados no trabalho foram:
    • Plots.jl
    • CSV.jl
    • DataFrames.jl
    • Dates.jl
    • Statistics.jl
    • Dates.jl

Comparação entre R e Python

Ambas as implementações, em R e Python, demonstraram capacidade idênticas para processar o grande conjunto de dados de vôos utilizando a técnica de leitura em bloco.

Os resultados estatísticos finais (como o percentual médio e máximo de atraso das companhias aéreas) foram consistentes e idênticos entre as duas linguagens

Os resultados a seguir:

R vs. Python

Sobre o banco de dados

  • Informações de Voôs de 2015 pelas principais companhias aéreas do EUA
  • O arquivo é de 200.91153 Mb e contém 31 colunas
  • Analisamos o problema, que seria determinar o percentual de voos atrasados na chegada (ARRIVAL DELAY > 10 minutos)
  • As estatísticas calculadas para as companhias (AA, DL, UA, US) foram consistentes entre as três linguagens (Julia, R e Python).
  • O resultado final é visualizado através de mapas de calor em formato de calendário para cada companhia aérea.

Desafio (Em Python)

O objetivo da visualização é gerar um mapa de calor em formato de calendário para cada companhia aérea (AA, DL, UA, US) que represente a magnitude do percentual de voos atrasados ao longo do ano.

Código do calendário de calor

function plot_calendar_heatmap(stats::DataFrame, airline_code::AbstractString)
    airline_data = filter(row -> row.AIRLINE == airline_code, stats)

    if eltype(airline_data.Date) <: AbstractString
        airline_data.Date = Date.(airline_data.Date)
    end

    p = plot(layout = (4, 3), size = (1000, 800),
             title = "Heatmap Calendário - $(airline_code)")

    for month in 1:12
        month_data = filter(r -> month(r.Date) == month, airline_data)

        heatmap_data = fill(NaN, 7, 6)

        for r in eachrow(month_data)
            day_number = day(r.Date)
            weekday = dayofweek(r.Date)         
            week_in_month = Int(fld(day_number - 1, 7) + 1)
            heatmap_data[weekday, week_in_month] = r.Perc
        end

        # Paleta de cores
        palette = cgrad([RGB(1,1,1), :yellow, :orange, :red])

        # Plot individual do mês
        plt = heatmap(
            heatmap_data;
            title = monthname(month),
            c = palette,
            colorbar = false,
            xlabel = "Semana",
            yticks = (1:7, ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]),
            ylabel = ""
        )

        plot!(p, plt)
    end

    return p
end    

Mapa de Calor

Agradecemos pela atenção!